﻿using System;
using DapperExtensions.Mapper;
using Newtonsoft.Json;
using ZilLion.Service.Core.Domain.EntityBase.JsonConverter;

namespace ZL.CRM.CommonEntity.AccYwDetail
{
    public class Cfv4Accopr1: OprYwCommon
    {

        /// <summary>
        ///  操作记录：卡种id
        /// </summary>
        public int Oprcgsid { get; set; }

        /// <summary>
        ///  操作记录：折扣类别id（开户=具体id,其他=0）
        /// </summary>
        public int Oprdisid { get; set; }

        /// <summary>
        ///  操作记录：押金（开户=具体id,其他=0）
        /// </summary>
        public decimal Oprcdeposit { get; set; }

        /// <summary>
        ///  操作记录：工本费（开户=具体id,其他=0）
        /// </summary>
        public decimal Oprcfee { get; set; }

        /// <summary>
        ///  充值方式：0-普通钱包（开户或续充） 1-红包 2-退消费 7-余额调增  （与钱包类型一致） 5-送积分 6-撤销积分兑换  8-积分调增
        /// </summary>
        public short Oprtype { get; set; }


        /// <summary>
        ///  操作记录：增加现金钱包
        /// </summary>
        public decimal Oprczxj { get; set; }

        /// <summary>
        ///  操作记录：增加充值增值钱包
        /// </summary>
        public decimal Oprczzz { get; set; }

        /// <summary>
        ///  操作记录：增加积分
        /// </summary>
        public int Oprczjf { get; set; }

        /// <summary>
        ///  积分类型：1-即积即兑 2-需人工转可兑
        /// </summary>
        public short Oprczjftype { get; set; }

        /// <summary>
        ///  操作记录：变动后现金钱包
        /// </summary>
        public decimal Opraftxj { get; set; }

        /// <summary>
        ///  操作记录：变动后充值增值钱包(不含红包)
        /// </summary>
        public decimal Opraftzz { get; set; }

        /// <summary>
        ///  操作记录：变动后积分(可兑+不可兑)
        /// </summary>
        public int Opraftjf { get; set; }



        /// <summary>
        ///  事件关联：红包增值钱包开始使用日期
        /// </summary>
        [JsonConverter(typeof(ChinaDateTimeConverter))]
        public DateTime? Oprhbbegdate { get; set; }

        /// <summary>
        ///  事件关联：红包增值钱包截止使用日期
        /// </summary>
        [JsonConverter(typeof(ChinaDateTimeConverter))]
        public DateTime? Oprhbenddate { get; set; }


        public decimal Oprczsum => Oprczxj + Oprczzz;

        public decimal OprAftsum => Opraftxj + Opraftzz;


    }
    public class Cfv4Accopr1Mapper : ClassMapper<Cfv4Accopr1>
    {
        public Cfv4Accopr1Mapper()
        {
            Table("#Cfv4Accopr1");
            Map(f => f.Oprtime).Column("Oprtime");
            Map(f => f.Oprsno).Column("Oprsno");
            Map(f => f.Opraccid).Column("Opraccid");
            Map(f => f.Oprcardno).Column("Oprcardno");
            Map(f => f.Oprctype).Column("Oprctype");
            Map(f => f.Oprcgsid).Column("Oprcgsid");
            Map(f => f.Oprdisid).Column("Oprdisid");
            Map(f => f.Oprcdeposit).Column("Oprcdeposit");
            Map(f => f.Oprcfee).Column("Oprcfee");
            Map(f => f.Oprtype).Column("Oprtype");
            Map(f => f.Oprbrid).Column("Oprbrid");
            Map(f => f.Oprbrname).Column("Oprbrname");
            Map(f => f.Oprczxj).Column("Oprczxj");
            Map(f => f.Oprczzz).Column("Oprczzz");
            Map(f => f.Oprczjf).Column("Oprczjf");
            Map(f => f.Oprczjftype).Column("Oprczjftype");
            Map(f => f.Opraftxj).Column("Opraftxj");
            Map(f => f.Opraftzz).Column("Opraftzz");
            Map(f => f.Opraftjf).Column("Opraftjf");
            Map(f => f.Oprywsno).Column("Oprywsno");
            Map(f => f.Oprywdrwsno).Column("Oprywdrwsno");
            Map(f => f.Oprid).Column("Oprid");
            Map(f => f.Oprname).Column("Oprname");
            Map(f => f.Oprywdate).Column("Oprywdate");
            Map(f => f.Oprskywdate).Column("Oprskywdate");
            Map(f => f.Oprskbrid).Column("Oprskbrid");
            Map(f => f.Oprskbrname).Column("Oprskbrname");
            Map(f => f.Oprskppid).Column("Oprskppid");
            Map(f => f.Oprskppname).Column("Oprskppname");
            Map(f => f.Oprhbbegdate).Column("Oprhbbegdate");
            Map(f => f.Oprhbenddate).Column("Oprhbenddate");
            Map(f => f.Oprywwindow).Column("Oprywwindow");
            Map(f => f.Oprywbno).Column("Oprywbno");
            Map(f => f.Oprsummary).Column("Oprsummary");
            Map(f => f.Appidopenid).Column("Appidopenid");

        }

    }
}
